package com.bf.electroplating.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bf.electroplating.pojo.dto.frontPage.*;
import com.bf.electroplating.pojo.vo.home.*;
import com.bf.electroplating.pojo.vo.inflowManagement.InflowManagementVO;
import  com.bf.electroplating.pojo.vo.ParkSumaryVO;
import com.bf.electroplating.pojo.vo.wasteGasMonitoringVO.WasteGasMonitoringLogVO;

import java.util.List;

/**
 * 前端首页数据服务接口
 * 为环保管理驾驶舱提供数据服务
 */
public interface IFrontHomeDataService {

    /**
     * 获取合规管理数据
     * @return 合规管理数据VO
     */
    ComplianceDataVO getComplianceData(String companyId);

    /**
     * 获取用电检测数据
     * @return 用电检测数据VO
     */
    PowerMonitoringDataVO getPowerMonitoringData();

    /**
     * 获取废气管控数据
     * @return 废气管控数据VO
     */
    ExhaustGasControlDataVO getExhaustGasControlData(String companyId);

    /**
     * 获取水质监测数据
     * @return 水质监测数据VO
     */
    WaterQualityMonitoringDataVO getWaterQualityMonitoringData();

    /**
     * 获取预警管理数据
     * @return 预警管理数据VO
     */
    WarningManagementDataVO getWarningManagementData(String companyId);

    /**
     * 获取企业地图数据
     * @return 企业地图数据VO
     */
    EnterpriseMapDataVO getEnterpriseMapData(String companyId);

    /**
     * 获取分质分流数据
     * @return 分质分流数据VO
     */
    WastewaterSeparationDataVO getWastewaterSeparationData();

    /**
     * 获取雨排口信息数据
     * @return 雨排口信息数据VO
     */
    RainfallOutletDataVO getRainfallOutletData(String id);

    /**
     * 获取企业设备树数据
     * @return 企业设备树数据VO
     */
    List<EnterpriseDeviceTreeVO> getEnterpriseDeviceTree(String companyId);

    /**
     * 获取监测点详情数据
     * @param deviceId 设备ID
     * @param dataTime 数据时间
     * @return 监测点详情数据VO
     */
    MonitoringPointDetailVO getMonitoringPointDetail(String deviceId, String dataTime);

    /**
     * 获取监测点数据列表
     * @param id 设备ID
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param currentPage 当前页码
     * @param pageSize 每页大小
     * @return 监测点数据列表VO
     */
    MonitoringPointDataListVO getMonitoringPointDataList(String id, String startTime, String endTime, Integer currentPage, Integer pageSize);

    /**
     * 获取企业检测因子树数据
     * @return 企业检测因子树数据VO
     */
    List<CompanyFactorTreeVO> getCompanyFactorTree();

    /**
     * 获取企业废水类型树数据
     * @return 企业废水类型树数据VO
     */
    List<CompanyWastewaterTreeVO> getCompanyWastewaterTree();

    /**
     * 获取企业废气树数据
     * @return 企业废气树VO列表
     */
    List<CompanyWasteGasTreeVO> getCompanyWasteGasTree(String companyId);

    /**
     * 获取废气处理设施详情
     *
     * @param companyId 企业ID
     * @param startTime 开始时间
     * @return 废气处理设施详情VO
     */
    WasteGasDetailVO getWasteGasDetail(String companyId,String itemId, String startTime);

    /**
     * 获取企业预排口运行详情
     * @param companyId 企业ID
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 企业预排口运行详情VO
     */
    PreDischargeDetailVO getPreDischargeDetail(String companyId,String waterId, String startTime, String endTime);

    Page<WasteGasMonitoringLogVO> getWasteGasList(String companyId, String itemId, String startTime, String endTime, Integer pageNum, Integer pageSize);

    Page<InflowManagementVO> getPreDischargeList(String companyId, String waterId, String startTime, String endTime, Integer pageNum, Integer pageSize);

    /**
     * 获取雨水数据列表
     * @param rainfallDataQueryDTO 雨水数据查询参数
     * @return 雨水数据分页列表
     */
    Page<RainfallDataVO> getRainfallDataList(RainfallDataQueryDTO rainfallDataQueryDTO);

    /**
     * 获取月度数据统计列表
     * @param monthlyStatsQueryDTO 月度统计查询参数
     * @return 月度统计数据分页列表
     */
    Page<MonthlyStatsVO> getMonthlyStatsList(MonthlyStatsQueryDTO monthlyStatsQueryDTO);

    /**
     * 获取月度统计趋势图数据
     * @param monthlyStatsQueryDTO 月度统计查询参数
     * @return 月度统计趋势图数据
     */
    MonthlyChartVO getMonthlyStatsChart(MonthlyStatsQueryDTO monthlyStatsQueryDTO);

    /**
     * 获取电导率趋势图数据
     * @param monthlyStatsQueryDTO 月度统计查询参数
     * @return 电导率趋势图数据
     */
    MonthlyChartVO getConductivityTrendChart(MonthlyStatsQueryDTO monthlyStatsQueryDTO);

    /**
     * 获取偷漏排列表
     * @param suspectedDischargeQueryDTO 偷漏排查询参数
     * @return 偷漏排数据分页列表
     */
    Page<SuspectedDischargeVO> getSuspectedDischargeList(SuspectedDischargeQueryDTO suspectedDischargeQueryDTO);

    List<CompanyRainTreeVO> getCompanyRainTree();

    /**
     * 获取污水厂树数据
     * @return 污水厂树数据列表
     */
    List<SewagePlantTreeVO> getSewagePlantTree();

    /**
     * 获取污水厂数据详情
     * @param sewagePlantDetailDTO 污水厂详情查询参数
     * @return 污水厂数据详情VO
     */
    SewagePlantDetailVO getSewagePlantDetail(SewagePlantDetailDTO sewagePlantDetailDTO);

    /**
     * 获取污水厂排水口运行列表
     * @param sewagePlantListDTO 污水厂列表查询参数
     * @return 污水厂排水口运行列表分页数据
     */
    Page<SewagePlantListVO> getSewagePlantList(SewagePlantListDTO sewagePlantListDTO);

    EnterpriseMapDataVO getEnterpriseMapDataWithChart(String companyId);

    ParkSumaryVO parkSummary();

    EnterpriseOutletSummaryVO enterpriseOutletSummaryVO(RainFallOutletHisDataDTO rainFallOutletHisDataDTO);
}
